package senhas;

public class QuebradorDeSenhas extends Thread {
	private ArquivoDeSenhas arq;
	private String senhaCript;
	private FilaDeSenhasGeradas filaSenhasGeradas;
	
	public boolean pularParaProxSenha;
	
	public QuebradorDeSenhas(ArquivoDeSenhas a) {
		System.out.println("Nova thread");
		arq = a;
		pularParaProxSenha = false;
	}
	
	public void run() {
		while (arq.getGeradorDeSenhas() == null) {
			System.out.println("Aguardando gerador de senhas");
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		filaSenhasGeradas = arq.getGeradorDeSenhas().getFilaSenhasGeradas();
		
		String tmp = "";
		for(senhaCript = arq.getNovaSenhaCript(); senhaCript != null; senhaCript = arq.getNovaSenhaCript()) {
			//System.out.println("Quebrando "+senhaCript);
			while (!tmp.equals(senhaCript) && !pularParaProxSenha) { //TODO
				
				tmp = filaSenhasGeradas.getProxSenha(this);
				while (tmp == null) {
					try {
						Thread.sleep(100);
						tmp = filaSenhasGeradas.getProxSenha(this);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
			
			if (tmp.equals(senhaCript))
				System.out.println("Achou!!!"+ tmp + " ==> "+senhaCript); //TODO:
			
			if (pularParaProxSenha)
				pularParaProxSenha = false;
		}
	}
}
